package ipt.dao.alu06;

import ipt.enumeracion.Rol;
import ipt.exp.AlumnoException;
import ipt.vo.Alumno;

import java.util.List;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class AlumnoTXTDAO implements AlumnoDAO{
	
	public File getConnection(){
		File archivo;
		archivo = ConnectionFactoryTXT.getInstance().getConnection();
		return archivo;
	}
	
	public List<Alumno> getAlumnos() {
		List<Alumno> arrayListAlumnos = new ArrayList<Alumno>();
		
		String linea;
		BufferedReader br=null;


		File archivo = getConnection();
		try {
			FileReader fr = new FileReader(archivo);
			br = new BufferedReader(fr);
			while ((linea = br.readLine()) != null) {
				
				Alumno nuevoAlumno = cargarLinea(linea);

				arrayListAlumnos.add(nuevoAlumno);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			try {
				br.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return arrayListAlumnos;

	}
	
	public Alumno cargarLinea(String linea) throws AlumnoException {
		Alumno nuevoAlumno = new Alumno();
		StringTokenizer tokens = new StringTokenizer(linea, ",");

		nuevoAlumno.setNombre(tokens.nextToken());
		nuevoAlumno.setApellido1(tokens.nextToken());
		nuevoAlumno.setApellido2(tokens.nextToken());
		nuevoAlumno.setEdad(Integer.parseInt(tokens.nextToken()));
		nuevoAlumno.setEmail(tokens.nextToken());
		nuevoAlumno.setDni(tokens.nextToken());
		nuevoAlumno.setId_curso(0);
		
		String tipo = tokens.nextToken();
		if ("TRABAJADOR".equalsIgnoreCase(tipo)) {
			nuevoAlumno.setRol(Rol.TRABAJADOR);
		} else if ("JEFE".equalsIgnoreCase(tipo)) {
			nuevoAlumno.setRol(Rol.JEFE);
		} else if ("CLIENTE".equalsIgnoreCase(tipo)) {
			nuevoAlumno.setRol(Rol.CLIENTE);
		}
		return nuevoAlumno;
	}

	@Override
	public Alumno getAlumnoByDni(String dni) throws AlumnoException {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public boolean udapteAlumno(Alumno alu) throws AlumnoException {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean deleteAlumno(String dni) throws AlumnoException {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean insertAlumno(Alumno alu) throws AlumnoException {
		// TODO Auto-generated method stub
		return false;
	}
}
